#pragma once

#include <string>
#include <iostream>



typedef enum
{
	ZERO = 0,
	ONE  = 1
}TOGGLE_BIN;


class CG_toggle_vector
{
	private:
		char *org_data;
		long *data;
		long num_elements;
		long length;
		long num_toggles;
	
		bool parse_elements(const char*);
	public:
		CG_toggle_vector();
		CG_toggle_vector(const CG_toggle_vector&);
		CG_toggle_vector(const char*);
		~CG_toggle_vector();
		CG_toggle_vector& operator=(const CG_toggle_vector& new_vector);
		bool CG_toggle_vector_set_data(const char *aData);
		char *CG_toggle_vector_get_org_data() const;
		long get_next_toggle(long);
		TOGGLE_BIN operator[](long);
		long get_length();
		long get_num_toggles();
		long get_num_elements();
		CG_toggle_vector operator&(CG_toggle_vector& vec);
		CG_toggle_vector operator|(CG_toggle_vector& vec);
		CG_toggle_vector operator^(CG_toggle_vector& vec);
};
